package cn.jolyoulu.adminweb.service;



import cn.jolyoulu.adminweb.entity.vo.SysUserInfoVO;
import cn.jolyoulu.adminweb.entity.bo.LoginBO;
import cn.jolyoulu.cmnservice.entity.po.HoldUser;
import cn.jolyoulu.cmnservice.entity.po.SysRole;
import cn.jolyoulu.cmnservice.entity.po.SysUser;

import java.util.List;
import java.util.Set;

/**
 * @Author LuZhouJin
 * @Date 2023/3/16
 */
public interface ApiSysUserAuthService {

    /**
     * 用户登录
     * @param loginBO
     * @return
     */
    String login(LoginBO loginBO);

    /**
     * 获取用户信息
     * @return
     */
    SysUserInfoVO userInfo();

    /**
     * 校验验证码
     * @param loginBO
     */
    void checkVerifyCode(LoginBO loginBO);

    /**
     * 密码校验登录成功后会返回用户信息
     * @param bo
     * @return
     */
    SysUser checkPwd(LoginBO bo);

    /**
     * 检查用户状态
     * @param userId
     */
    void checkUserStatus(String userId);

    /**
     * 获取用户信息，权限
     * @param userId
     */
    HoldUser getHoldUser(String userId);

    /**
     * 获取权限菜单信息
     *
     * @param sysRoles@return
     */
    Set<String> selectPermissionMenu(List<SysRole> sysRoles);

    /**
     * 退出登录
     */
    void logOut();

    /**
     * 比对 token
     * @param handlerToken 请求头的token(去除了前缀的)
     * @param userId 用户id
     */
    void checkToken(String handlerToken, String userId);

}
